<?php
class role_manage {

	var $ci;
	public function __construct() {
		$this->ci =& get_instance();
	}

	/**
	 *
	 *
	 * @name check_role_name
	 * @date 2013-3-25
	 * @author eifel
	 * @param string 角色名称, string 角色编号
	 * @return array 结果
	 * @version 1.0
	 * @description 检验角色名称是否合法且不重复
	 */
	public function check_role_name($role_name,$role_id) {
		if ($role_name=="") {
			$result['result']	=false;
			$result['message']	="角色名称不能为空";
			return $result;
		}
		if (mb_strlen($role_name,"utf-8")>20) {
			$result['result']	=false;
			$result['message']	="角色名称不能超过20个字";
			return $result;
		}
		$this->ci->load->model("common/adm_role_model");
		$role_info	=$this->ci->adm_role_model->query_role_by_name($role_name);
		if ($role_info==null) {
			$result['result']	=true;
			$result['message']	="角色名称可以使用";
			return $result;
		}
		if ($role_info['role_id']==$role_id) {
			$result['result']	=true;
			$result['message']	="角色名称可以使用";
			return $result;
		}else{
			$result['result']	=false;
			$result['message']	="角色名称已经存在了";
			return $result;
		}
	}

	/**
	 *
	 *
	 * @name add_role
	 * @date 2013-3-25
	 * @author eifel
	 * @param array 角色信息
	 * @return array 操作结果
	 * @version 1.0
	 * @description 添加角色并返回操作结果
	 */
	public function add_role($role_data) {
		$check_role_name_result =$this->check_role_name($role_data['role_name'],"");
		if ($check_role_name_result['result']==false) {
			return $check_role_name_result;
		}
		$role_data['created_by']	=$_SESSION['user_name'];
		$role_data['created_time']	=date("y-m-d h:i:s");
		$role_data['parent_id']	=",0,";
		
		$this->ci->load->model("common/adm_role_model");
		$role_id 	=$this->ci->adm_role_model->add_role($role_data);
		$result['result']	=true;
		$result['message']	="添加角色成功";
		$result['redirect_url']=base_url()."index.php/common_role_manage";
		return $result;
	}

	/**
	 *
	 *
	 * @name query_role_info
	 * @date 2013-3-25
	 * @author eifel
	 * @param string 角色编号
	 * @return array 角色信息
	 * @version 1.0
	 * @description 通过角色编号返回角色信息
	 */
	public function query_role_info($role_id) {
		$this->ci->load->model("common/adm_role_model");
		return $this->ci->adm_role_model->query_role_info($role_id);
	}

	/**
	 *
	 *
	 * @name query_role_list
	 * @date 2013-3-25
	 * @author eifel
	 * @param
	 * @return array 角色列表
	 * @version 1.0
	 * @description 返回分页的角色列表
	 */
	public function  query_role_list(){
		$this->ci->load->model("common/adm_role_model");
		$start		=	intval($this->ci->input->get("per_page"));
		$limit		=	$this->ci->config->item("page_size");
		return	$this->ci->adm_role_model->query_role_list($start,$limit);

	}
	/**
	 *
	 *
	 * @name query_role_num
	 * @date 2013-3-25
	 * @author eifel
	 * @param
	 * @return int 角色数量
	 * @version 1.0
	 * @description 返回角色数量
	 */

	public function  query_role_num(){
		$this->ci->load->model("common/adm_role_model");
		$role_level_info	=$this->query_user_role();
		return $this->ci->adm_role_model->query_role_num();
	}

	/**
	 *
	 *
	 * @name get_role_right
	 * @date 2013-3-25
	 * @author eifel
	 * @param string 角色编号
	 * @return array 角色的权限
	 * @version 1.0
	 * @description 返回角色的权限信息
	 */
	public function get_role_right($role_id) {
		$this->ci->load->model("common/adm_role_right_model");
		$role_right= $this->ci->adm_role_right_model->query_role_right($role_id);
		$right_list=array();
		for ($i = 0; $i < count($role_right); $i++) {
			$right_list[]	=$role_right[$i]['right_id'];
		}
		return $right_list;
	}

	/**
	 *
	 *
	 * @name assign_right
	 * @date 2013-3-25
	 * @author eifel
	 * @param string 角色编号,array 权限列表
	 * @return array 操作结果
	 * @version 1.0
	 * @description 编辑角色的权限
	 */
	public function assign_right($role_id,$right_id) {
		$this->ci->load->model("common/adm_role_right_model");
		$this->ci->adm_role_right_model->delete_role_right($role_id);
		if ($right_id!=null) {
			for ($i = 0; $i < count($right_id); $i++) {
				$right_array[]=array("role_id"=>$role_id,
						"right_id"=>$right_id[$i]);
			}
			$this->ci->adm_role_right_model->add_role_right($right_array);
		}
		$data['result']		=true;

		$data['redirect_url']	=base_url()."index.php/common_role_manage/";
		return $data;
	}

	/**
	 *
	 *
	 * @name modify_role
	 * @date 2013-3-26
	 * @author eifel
	 * @param array 角色信息,string 角色编号
	 * @return array 操作结果
	 * @version 1.0
	 * @description 编辑角色信息
	 */
	public function modify_role($role_data,$role_id) {
		$check_role_name_result =$this->check_role_name($role_data['role_name'],$role_id);
		if ($check_role_name_result['result']==false) {
			return $check_role_name_result;
		}
		$role_data['modified_by']	=$_SESSION['user_name'];
		$role_data['modified_time']	=date("y-m-d h:i:s");
		$this->ci->load->model("common/adm_role_model");
		$this->ci->adm_role_model->modify_role($role_data,$role_id);
		$result['result']	=true;
		$result['message']	="编辑角色成功";
		$result['redirect_url']	=base_url()."index.php/common_role_manage";
		return $result;
	}

	/**
	 *
	 *
	 * @name delete_role
	 * @date 2013-3-26
	 * @author eifel
	 * @param string 角色编号
	 * @return array 操作结果
	 * @version 1.0
	 * @description 编辑角色信息
	 */
	public function delete_role($role_id) {
		if ($role_id==1) {
			$result['result']	=false;
			$result['message']	="管理员不能被删除!";
			return $result;
		}
		$this->ci->load->model("common/adm_role_model");
		$this->ci->adm_role_model->delete_role($role_id);
		$this->ci->load->model("common/adm_role_right_model");
		$this->ci->adm_role_right_model->delete_role_right($role_id);
		$result['result']	=true;
		$result['message']	="删除成功";
		return $result;
	}

	/**
	 *
	 *
	 * @name search_role
	 * @date 2013-3-26
	 * @author eifel
	 * @param string 关键词
	 * @return array 角色列表
	 * @version 1.0
	 * @description 搜索角色列表
	 */
	public function search_role($key) {
		$role_info	=$this->query_user_role();
		$this->ci->load->model("common/adm_role_model");

		return 	$this->ci->adm_role_model->search_role($role_info['role_id'],$key);
	}

	/**
	 *
	 *
	 * @name query_all_role
	 * @date 2013-3-26
	 * @author eifel
	 * @param
	 * @return array 角色列表
	 * @version 1.0
	 * @description 获取所有的角色列表
	 */
	public function query_all_role() {
		$this->ci->load->model("common/adm_role_model");
		return	$this->ci->adm_role_model->query_all_role();
	}

	/**
	 *
	 *
	 * @name query_user_role
	 * @date 2013-4-9
	 * @author eifel
	 * @param
	 * @return  array 用户的角色信息
	 * @version 1.0
	 * @description 返回用户的角色信息
	 */
	public function query_user_role($user_id="") {
		$this->ci->load->model("common/adm_role_model");
		if ($user_id=="") {
			$user_id 			=$_SESSION['user_id'];
		}
		$role_info	=$this->ci->adm_role_model->query_user_role($user_id);
		return $role_info;
	}
}